package com.woniushop.dao.imple;

import java.util.List;

import com.woniushop.dao.BaseDAO;
import com.woniushop.dao.GoodsTypeDAO;
import com.woniushop.entity.GoodsType;

/**
 * 商品类别DAO的实现类
 * 
 * @author 崔新雄
 *
 */
public class GoodsTypeDAOImple implements GoodsTypeDAO {

	private BaseDAO<GoodsType> baseDAO = new BaseDAO<GoodsType>();

	/**
	 * 将goodsType对象加入数据库中
	 * 
	 * @param goodsType
	 */
	@Override
	public void add(GoodsType goodsType) {
		String sql = "insert into goodstype(uid,gtname,gtdesc,gtstate) values(?,?,?,?)";
		Object[] objs = { goodsType.getUid(), goodsType.getGtname(), goodsType.getGtdesc(), goodsType.getGtstate() };
		baseDAO.update(sql, objs);
	}

	/**
	 * 根据商品类别id删除数据库中对应的商品类别数据
	 * 
	 * @param gtid
	 */
	@Override
	public void delete(Integer gtid) {
		String sql = "delete from goodstype where gtid=?";
		Object[] objs = { gtid };
		baseDAO.update(sql, objs);
	}

	/**
	 * 修改对应的商品类别数据
	 * 
	 * @param goodsType
	 */
	@Override
	public void update(GoodsType goodsType) {
		String sql = "update goodstype set uid=?,gtname=?,gtdesc=?,gtstate=? where gtid=?";
		Object[] objs = { goodsType.getUid(), goodsType.getGtname(), goodsType.getGtdesc(), goodsType.getGtstate(),
				goodsType.getGtid() };
		baseDAO.update(sql, objs);
	}

	/**
	 * 根据对应的商品类别id查找商品类别数据
	 * 
	 * @param gtid
	 * @return
	 */
	@Override
	public GoodsType findOne(Integer gtid) {
		String sql = "select gt.*,u.uname,u.uaccount from goodstype gt,user u where u.uid=gt.uid and gtid=?";
		Object[] objs = { gtid };
		List<GoodsType> list = baseDAO.select(sql, GoodsType.class, objs);
		if (list != null && list.size() > 0) {
			return list.get(0);
		}
		return null;
	}

	/**
	 * 根据对应的商品类别名称查找商品类别数据
	 * 
	 * @param gtname
	 * @return
	 */
	@Override
	public GoodsType findOne(String gtname) {
		String sql = "select gt.*,u.uname,u.uaccount from goodstype gt,user u where u.uid=gt.uid and gtname=?";
		Object[] objs = { gtname };
		List<GoodsType> list = baseDAO.select(sql, GoodsType.class, objs);
		if (list != null && list.size() > 0) {
			return list.get(0);
		}
		return null;
	}

	/**
	 * 多条件分页查询商品类别数据
	 * 
	 * @param page
	 * @param pageSize
	 * @param goodsType
	 * @return
	 */
	@Override
	public List<GoodsType> findByPage(Integer page, Integer pageSize, GoodsType goodsType) {
		String sql = "select gt.*,u.uname,u.uaccount from goodstype gt,user u where u.uid=gt.uid";
		sql = finishSQL(goodsType, sql);
		sql += " limit ?,?";
		return baseDAO.select(sql, GoodsType.class, (page - 1) * pageSize, pageSize);
	}

	/**
	 * 查找符合条件的商品类别数量
	 * 
	 * @param goodsType
	 * @return
	 */
	@Override
	public Integer count(GoodsType goodsType) {
		String sql = "select count(*) from goodstype gt,user u where u.uid=gt.uid";
		sql = finishSQL(goodsType, sql);
		return baseDAO.count(sql);
	}

	/**
	 * 完成多条件查询的SQl语句
	 * 
	 * @param goodsType
	 * @param sql
	 * @return
	 */
	private String finishSQL(GoodsType goodsType, String sql) {
		String gtdesc = goodsType.getGtdesc();
		if (gtdesc != null && !gtdesc.trim().equals("")) {
			sql += " and gtdesc like '%" + gtdesc + "%'";
		}
		String gtname = goodsType.getGtname();
		if (gtname != null && !gtname.trim().equals("")) {
			sql += " and gtname like '%" + gtname + "%'";
		}
		Integer gtstate = goodsType.getGtstate();
		if (gtstate != null) {
			sql += " and  gtstate='" + gtstate + "'";
		}
		return sql;
	}

}
